package com.Trie.lsj;


import java.util.ArrayList;
import java.util.List;

/**
 * 正向最大匹配算法程序
 * @author Liu S.J
 * 最大分词长度暂时人工输入
 */
public class MaxMatch {
	
	private static final int MAX_LENGTH = 8;

	/**
	 * 分词切割
	 * @param text
	 * @param DIC
	 * @return
	 */
    public static List<String> WordSeg(String text,Trie DIC){ 
        List<String> result = new ArrayList<String>(); 
        
        while(text.length()>0){ 
            int len = MAX_LENGTH;       
            if(text.length() < len){
            	len = text.length(); 
            } 
            //取指定的最大长度的文本去字典中匹配 
            String tryWord = text.substring(0, len); 
            while(!DIC.search(tryWord)){//如果词典中不包含该段文本，执行循环
                //如果长度为1 的话，且没有在字典中匹配，返回 
                if(tryWord.length() == 1){ 
                    break; 
                }
                /** 
                 * 如果匹配不到，则长度减1，继续匹配
                 * --这里就是最关键的地方,把最右边的词去掉一个，继续循环 
                 */       
                tryWord  = tryWord.substring(0, tryWord.length()-1);                             
            } 
            result.add(tryWord); 
            //移除该次tryWord，继续循环 
            text = text.substring(tryWord.length()); 
        } 
        return result; 
    } 
}
